/**
 * 批量修改文件夹下的MovieClip动画文件(*_mc.json),为其 增加`攻击,移动,死亡,施法`等11个动作
 *
 *
 * MovieClip 的数据结构说明
 * "mc": MovieClip数据列表,
 * 列表中的每个属性都代表一个MovieClip名字
 * "frameRate": 帧率, 【可选属性】，默认值24，可以由开发者通过代码设定
 * "labels": 帧标签列表，【可选属性】，如果没有帧标签，可以不加这个属性。
 * "name": 标签名
 * "frame": 标签所在的帧序号
 * "end": 标签结束帧序号
 * "events": 特殊事件【可选属性】
 * "res": 该关键帧帧上需要显示的图片资源，【可选属性】，默认值为空（用于空白帧的情况）
 * "x": 图片需要显示的x坐标, 【可选属性】，默认值0
 * "y":图片需要显示的y坐标, 【可选属性】，默认值0
 * "res": 资源列表
 * 列表中的每个属性都代表一个资源名
 * "x": 资源所在纹理集位置的x坐标
 * "y": 资源所在纹理集位置的y坐标
 * "w": 资源宽度
 * "h": 资源高度
 * @type {module:fs}
 */
var fs = require('fs');
var MC = {
    res: {
        "$_0": {x: 0, y: 0, w: 0, h: 0},
        "$_1": {x: 0, y: 0, w: 0, h: 0},
    },
    mc: {
        "mc": {
            frameRate: 8,
            labels: [
                {"name": "stand0", "frame": 1, "end": 4}
                , {"name": "$action0", "frame": 5, "end": 8}

            ],
            events: [],
            frames: [
                {
                    res: "$_0",
                    y: -36,
                    duration: 1,
                    x: -30
                },
                {
                    res: "$_1",
                    y: -36,
                    duration: 1,
                    x: -30
                },
            ]
        }
    },
    file: ""
}


var ActionConfig = [
    [0, 4, 64,],    //  stand(站立)
    [64, 6, 64],    //  walk
    [128, 6, 64],    //  run
    [192, 1, 8],    //  stalemate(僵持)
    [200, 6, 64],    //  attack
    [264, 6, 64],    //  mining(挖矿)
    [328, 8, 64],    //  jump(跳砍)
    [392, 6, 64],    //  conjare(施法)
    [456, 2, 16],    //  pluck(采摘,割取)
    [472, 3, 64],    //  beattacked(被攻击)
    [536, 4, 64],    //  die
];

function insertAction(fromFile) {

    console.log("fromFile: ", fromFile);

    var labels = [];
    var startIndex = 1;
    var ArrowCount = 8;
    for (var i = 0; i < ActionConfig.length; i++) {
        var item = ActionConfig[i];

        for (var j = 0; j < ArrowCount; j++) {
            var start = startIndex;
            var end = start + item[1] - 1;
            labels[i * ArrowCount + j] = {"name": i + "_" + j, "frame": start, "end": end}
            startIndex += item[1];
        }
    }
    // console.log("labels ", labels);


    var mcName = fromFile.substring(fromFile.lastIndexOf("\\") + 1, fromFile.lastIndexOf("_mc"));
    console.log("[INFO] mcName: ", mcName);
    var buf = fs.readFileSync(fromFile, "UTF-8");
// fs.writeFileSync(fromFile+"_bak",buf,"UTF-8")
    var mcData = JSON.parse(buf);
    mcData.mc[mcName].labels = labels;
    fs.writeFileSync(fromFile, JSON.stringify(mcData), "UTF-8");

}

var fromDir = "D:\\User\\Documents\\PK\\clientH5\\resource\\mir2\\Hum2\\";
var files = fs.readdirSync(fromDir).filter(function (s) {
        return s.lastIndexOf("_mc.json") > 0;
    }
)

for (var i in files) {

    try {
        insertAction(fromDir + files[i]);
    } catch (e) {
        console.log("[ERR ]  " + e);
    }

}


